package LiKou;

public class Problem2789 {
    /**
     * 给你一个下标从 0 开始、由正整数组成的数组 nums 。
     *
     * 你可以在数组上执行下述操作 任意 次：
     *
     * 选中一个同时满足 0 <= i < nums.length - 1 和 nums[i] <= nums[i + 1] 的整数 i 。将元素 nums[i + 1] 替换为 nums[i] + nums[i + 1] ，并从数组中删除元素 nums[i] 。
     * 返回你可以从最终数组中获得的 最大 元素的值。
     */

    public static void main(String[] args) {
        int[] nums={2,3,7,9,3};
        System.out.println(maxArrayValue(nums));
    }
    public static long maxArrayValue(int[] nums) {
        if(nums.length==1){
            return nums[0];
        }
        long result=0;
        long temp=0;
        int index=nums.length-1;
        while(index>0){
            temp=0;
            if(nums[index]>=nums[index-1]){
                temp=nums[index];
            }else{
                result=result>=nums[index]?result:nums[index];
                index--;
                if(index==0){
                    result=result>=nums[index]?result:nums[index];
                }
                continue;
            }
            while(index>0 && temp>=nums[index-1]){
                temp+=nums[index-1];
                index--;
            }
            result=result>=temp?result:temp;
            index--;
            if(index==0){
                result=result>=nums[index]?result:nums[index];
            }
        }
        return result;
    }
    public static long maxArrayValue2(int[] nums) {
        long sum=nums[nums.length-1];
        for(int i=nums.length-2;i>=0;i--){
            if(sum>=nums[i]){
                sum+=nums[i];
            }else{
                sum=nums[i];
            }
        }
        return sum;
    }
}
